HDD (Hard Disk Drive), SSD (Solid State Drive), etc. directly attached to a computer are referred to as DAS (Direct Attached Storage). What is popular now is a network storage in which these storages are connected to a host via a network. The network storage is generally categorized into SAN (Storage Area Network) and NAS (Network Attached Storage). iSCSI, Fiber Channel, etc. are known as SAN. In the case of SAN, a storage apparatus is connected, as block device, to a host machine (a machine that uses the storage) having a file system, via a network. As for NAS, for example, NFS (Network File System) is known. In the case of NAS, a file system is installed in a storage apparatus so that a host machine can access the file system from the upper level. Therefore, NAS is advantageous in that the host machine bears a smaller load and a plurality of host machines can share the file system of the storage apparatus.
For these network storages, the Ethernet is mainly used as the communication means and, for example, TCP/IPT widely used in the Internet is used as communication protocol. With these widely-used general-purpose techniques, the usage of the network storage becomes easier and the scalability, maintainability, etc. of the network storage are improved compared to known DAS.
In relation to the network storage Video streaming distribution has been popular recently. The streaming distribution is performed by a content distribution server that is called a VDD (Video On Demand) server, for example. This type of content distribution server performs a process of retrieving video content from its own storage server and transmits the content to a user terminal connected via a network. Therefore, the content distribution server may also be referred to as a network storage, in a broad sense. The communication protocol for the content distribution server is TCP/IP-based HTTP, RTP for real-time communication, etc. RTP uses FEC (Forward Error Correction) for error correction, for example.
Devices such as a storage and a network used as the network storage described above have exhibited a higher transfer rate. At present, 1 Gbps is mainly used for the Ethernet and 10 Gbps is used for data centers, for example. The specification definition for the next-generation 40 Gbps/100 Gbps Ethernet has been completed, which is expected to be gradually popular. As for the storage, in addition to higher transfer rate for RAID-configured HDD with striping (parallelization), the transfer performance of SSD has becomes, markedly higher recently, with 2 Gbps or above even for single SSD now available on the market. Moreover, concerning SATA, the I/F standards for storage devices, SATA3.0 with a 6-Gbps bandwidth has already been popular. With these trends taken into consideration, it is expected that a network storage with a 10-Gbps bandwidth will appear in the near future.
With such higher performance of the network storage, a host CPU that controls the network storage has to bear a heavier processing load. Conventionally, this problem is solved by a technique called TCP/IP offload engine (hereinafter, TOE). The TOE is provided with a dedicated processor or circuit for performing the process of TCP/IP described above on behalf of a host CPU to offload TCP/IP processing load from the host CPU. With the TOE, a higher-speed TCP/IP process than a known protocol process by software is achieved for higher performance of the network storage.
A storage device and TOE are control by a host CPU as a slave, with data input and output via a system memory. Therefore, when data in a storage is output/input over a network, data transfer between a storage device (such as SSD and HDD) and TOE is always done via a system memory.
Moreover, it occasionally happens that the transferred data is copied for several times in the system memory, which is done by application software running on a host CPU that bridges the storage device and the TOE, a data passing process between OS Kernel space and user space, etc. Especially, in the case of NAS, it is required to run a file system. With an ordinary file system being installed, data retrieved for each sector of a fixed byte length is transformed into a file of a given byte length, which causes data copy.
As explained above, data transfer between a storage device and TOE requires that a host CPU run software, hence read/write to a system memory has to be performed at least once. Moreover, the data transfer causes memory copy for several times in some cases in the system memory due to OS, application or file system processing, resulting in much heavier load to the system memory.
Conventionally, such a heavy load to the system memory is covered by a host CPU having high processing performance and a high-speed system memory. However, such a heavy load gradually becomes a problem for a transfer rate of recent network storages approaching 10 Gbps. Particularly, higher performance of a system memory requires a higher-grade host CPU and also a higher-grade chip set in the case of a PC or server, which makes a problem of cost, power consumption, etc. remarkable.